Virtual tape storage systems use hard disk drive storage to emulate tape drives and tape cartridges. For example, host systems perform input/output (I/O) operations with respect to a tape library by performing I/O operations with respect to a set of hard disk drives that emulate the tape library. In prior art virtual tape storage systems, such as the International Business Machines (IBM) Magstar® Virtual Tape Server, at least one virtual tape server (VTS) is coupled to a tape library comprising numerous tape drives and tape cartridges. The VTS is also coupled to a direct access storage device (DASD), comprised of numerous interconnected hard disk drives.
The DASD functions as a cache to volumes in the tape library. In VTS operations, the VTS processes the host's requests to access a volume in the tape library and returns data for such requests, if possible, from the cache. If the volume is not in the cache, then the VTS recalls the volume from the tape library to the cache, i.e., the VTS transfers data from the tape library to the cache. The VTS can respond to host requests for volumes that are present in the cache substantially faster than requests for volumes that have to be recalled from the tape library to the cache.
Because the cache can satisfy requests faster than the tape library, I/O requests can be satisfied faster if frequently accessed volumes are kept in the cache. However, since the capacity of the cache is relatively small when compared to the tape library, not all volumes can be kept in the cache. Hence, the VTS also premigrates volumes from the cache to the tape library, i.e., the VTS transfers data from the cache to the tape cartridges in the tape library. The process of transferring data from the cache to the tape cartridges is referred to as premigration. Eventually, these premigrated volumes will be removed from the cache and shortened to a pointer that points to the data on tape cartridges, freeing space in the cache for new data. This shortening, or “imigration,” operation is very fast, and the performance bottleneck in the VTS is the premigration operation itself.
In general, applications running on a host computer use a data path to read and write data to a storage device. In VTS operations with the host, the data path is used to read and write data with respect to data storage associated with the VTS. If the application (i.e. running on the host) needs device information about the data storage device (i.e. VTS), special applications have to be written to use other special paths to obtain the device information. For example in an AIX application, reads and writes are used to transfer application data and IOCTLSs (input and output control commands to specific AIX device drivers) are required to obtain device specific information.
In general, the special paths used to obtain device information are device specific, whereas the data path commands typically are not device specific. This makes applications that obtain device information less mobile between hardware platforms, making the applications more costly to maintain. In addition, data path commands have a fixed format for the data sent and to be returned, requiring a coordination of changes between the host application requesting the data, the operating system of the host that controls I/O devices and the storage device handling the request anytime additional information is needed from the data storage device. It is also inefficient to use the data path command method to obtain information from the storage device when the nature of the data has a high degree of variability in it. For example, if the storage device is an automated tape library and the information being requested is a list of the tapes stored in that library, that list could contain just a few hundred entries for a small library configuration or hundreds of thousands of entries for a large virtual library. Data path commands are not capable of handling an entirely variable amount of data easily. Typically, the data path command to obtain the information is designed to obtain one tape identifier at a time or some fixed multiple of tape identifiers, for example, one hundred tape identifiers. While obtaining a hundred at a time may work well for small libraries, the overhead of the hundreds of commands that would be necessary to obtain the information for a large library is excessive. What is required is a method to obtain device specific information from a data storage device that uses the standard host computer data path and read/write commands. Therefore there is a need for an improved method to obtain specific information from a storage device that uses the standard host computer data path and read/write commands.